package com.research.project.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.research.common.annotation.Excel;
import com.research.common.core.domain.BaseEntity;

/**
 * 项目管理对象 tb_project
 * 
 * @author ghn
 * @date 2025-09-03
 */
@Data
public class Project extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String projectCode;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目级别 */
    @Excel(name = "项目级别")
    private String projectLevel;

    /** 项目分类 */
    @Excel(name = "项目分类")
    private String projectType;

    /** 委托方单位 */
    @Excel(name = "委托方单位")
    private String entrustOrg;


    /** 合作经费（万元） */
    @Excel(name = "合作经费(万元)")
    private BigDecimal fundingTeamwork;

    /** 总额经费（万元） */
    @Excel(name = "总额经费(含税、万元)")
    private BigDecimal fundingAmount;

    /** 立项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "立项日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 预计结项时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计结项时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 要求论文数量 */
    @Excel(name = "要求论文数量")
    private Long reqPaperCount;

    /** 要求专利数量 */
    @Excel(name = "要求专利数量")
    private Long reqPatentCount;

    /** 要求会议数量 */
    @Excel(name = "要求会议数量")
    private Long reqMeetingCount;

    /** 要求培养人才数量 */
    @Excel(name = "要求培养人才数量")
    private Long reqTalentCount;

    /** 要求获奖数量 */
    @Excel(name = "要求获奖数量")
    private Long reqAwardCount;

    /** 要求软著数量 */
    @Excel(name = "要求软著数量")
    private Long reqSoftCount;

    /** 所属专业 */
    @Excel(name = "所属专业")
    private String belongto;

    /** 状态(0,进行中。1，已完成） */
    @Excel(name = "状态", readConverterExp = "0=进行中,1=已完成,2=未完成")
    private Integer status;

    /** 创建人（用户ID） */
    private Long createdBy;

    /** 修改人（用户ID） */
    private Long updatedBy;

    /** 创建时间 */
    private Date createdAt;

    /** 修改时间 */
    private Date updatedAt;

}
